package com.cjm.algorithm.leetcode;

/**
 * <p>给你一个<b style='font-weight:900'>升序排列</b>的数组nums， 请你原地删除重复出现的元素， 使每个元素只<b>出现一次</b>，
 * <p>返回删除后数组的新长度， 元素的<b>相对顺序</b>应该保持一致。</p>
 * <p>由于在某些语言中不能改变数组的长度， 所以必须将结果放在数组nums的第一部分。更规范
 * 地说， 如果在删除重复项之后有k个元素， 那么nums的前k个元素应该保存最终结果。</p>
 * <p>将最终结果插入nums的前k个位置后返回k。</p>
 * <p>不要使用额外的空间， 你必须在<b>原地</b>修改输入数组并在使用o(1)额外空间的条件下完成。</p>
 * <br>
 * <method>双指针</method>
 */
public class RemoveDuplicates26 {
    public int removeDuplicates(int nums[]) {
        if (nums.length == 0) {
            return 0;
        }
        int fast = 1, slow = 1;
        while (fast < nums.length) {
            if (nums[fast] != nums[fast - 1]) {
                nums[slow] = nums[fast];
                ++slow;
            }
            ++fast;
        }
        return slow;
    }
}
